package com.huazai.yangge.cas;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicStampedReference;
import java.util.concurrent.atomic.LongAccumulator;
import java.util.concurrent.atomic.LongAdder;

/**
 * CAS 靠硬件实现原子性
 * @author huazai
 * @date 2024/2/23
 */
public class CasDemo {
    // atomic 原子性     cas + 自旋转、
    // CAS compare and swap的缩写“比较并交换” 实现并发算法常用的一种技术
    // 自旋锁 好处：避免 synchronized 重锁  坏处：循环时间开销大， 2 就是中间过程忽略了，可以通过添加一个版本处理（）
    public  static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(1);
        final boolean b = atomicInteger.compareAndSet(1, 2002);
        AtomicStampedReference atomicStampedReference;


        LongAccumulator longAccumulator = new LongAccumulator((left, right) -> {
            return right + left;
        }, 1);



        LongAdder longAdder = new LongAdder();
        longAdder.increment();
        longAdder.sum();
    }
}
